package com.itextpdf.text.pdf; import com.itextpdf.testutils.CompareTool; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; import static junit.framework.Assert.*; public class PdfEncryptionTest { public static final String DEST_FOLDER = "./target/com/itextpdf/test/pdf/PdfEncryptionTest/"; public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/text/pdf/PdfEncryptionTest/"; public static byte[] ownerPassword = "ownerPassword".getBytes(); @Before public void setUp() { new File(DEST_FOLDER).mkdirs(); } @Test public void encryptAES256() throws IOException, DocumentException, InterruptedException { String outPdf = DEST_FOLDER + "AES256Encrypted.pdf"; String cmpPdf = SOURCE_FOLDER + "cmp_AES256Encrypted.pdf"; Document doc = new Document(); PdfWriter pdfWriter = PdfWriter.getInstance(doc, new FileOutputStream(outPdf)); // byte[] userPassword = "userPassword".getBytes(); byte[] userPassword = null; pdfWriter.setEncryption(userPassword, ownerPassword, -1852, PdfWriter.ENCRYPTION_AES_256); doc.open(); doc.add(new Paragraph("hello encrypted world")); doc.close(); pdfWriter.close(); assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DEST_FOLDER, "diff_")); } @Test public void stampAES256() throws IOException, DocumentException, InterruptedException { String outPdf = DEST_FOLDER + "stampAES256.pdf"; String cmpPdf = SOURCE_FOLDER + "cmp_stampAES256.pdf"; PdfReader reader = new PdfReader(SOURCE_FOLDER + "AES256EncryptedDocument.pdf", ownerPassword); PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(outPdf)); pdfStamper.close(); assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DEST_FOLDER, "diff_")); } @Test public void unethicalStampAES256() throws IOException, DocumentException, InterruptedException { String outPdf = DEST_FOLDER + "unethicalStampAES256.pdf"; String cmpPdf = SOURCE_FOLDER + "cmp_unethicalStampAES256.pdf"; PdfReader reader = new PdfReader(SOURCE_FOLDER + "AES256EncryptedDocument.pdf"); PdfReader.unethicalreading = true; PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(outPdf)); pdfStamper.close(); assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DEST_FOLDER, "diff_")); } }